import threading
import multiprocessing

# 定义一个函数，用于发送数据到管道
# pipe是否是参数安全的？
# 多个线程是否可以同时调用pipe.send()方法？
# 多个线程是否可以同时调用pipe.recv()方法？

def sender(pipe):
    for i in range(10):
        pipe.send(i)
        print(f"Sender: 发送了 {i}")

# 定义一个函数，用于从管道接收数据
def receiver(pipe):
    for i in range(10):
        data = pipe.recv()
        print(f"Receiver: 接收到了 {data}")

def main():
    # 创建一个管道
    pipe = multiprocessing.Pipe()

    # 创建发送者和接收者线程
    sender_thread = threading.Thread(target=sender, args=(pipe[0],))
    receiver_thread = threading.Thread(target=receiver, args=(pipe[1],))

    # 启动线程
    sender_thread.start()
    receiver_thread.start()

    # 等待线程结束
    sender_thread.join()
    receiver_thread.join()

if __name__ == "__main__":
    main()